package interfazUsuario.botones;

import java.awt.Graphics;

import javax.swing.ImageIcon;

import utilsPc.listas.ListaBotonPc;
import cultivameCore.geometria.Punto;
import cultivameCore.motor.Accion;

public class BotonExpListaBoton extends BotonAbstract {
	
	private ListaBotonPc lista=new ListaBotonPc();
	
	public BotonExpListaBoton(Punto p, ImageIcon img) {
		super(p, img);
		// TODO Auto-generated constructor stub
		this.setAccion(new Accion(){
			public void action(){
				if(lista.length()>0){
					if(lista.get(0).isVisible()){
						System.out.println("oculto");
						for(int i=0;i<lista.length();i++){
							lista.get(i).setVisible(false);
						}
					}else{
						System.out.println("muestro");
						for(int i=0;i<lista.length();i++){
							lista.get(i).setVisible(true);
						}
					}
				}
			}
		});
	}
	
	public void add(BotonAbstract boton){
		if (lista.length() > 0) {
			BotonAbstract b=lista.get(lista.length()-1);
			boton.setPunto(new Punto(getPunto().getX() + getImg().getIconWidth(),
					b.getPunto().getY()+b.getImg().getIconHeight()));
			boton.setId(lista.length());
		}else{
			boton.setPunto(new Punto(getPunto().getX() + getImg().getIconWidth(),
					getPunto().getY()));
			boton.setId(0);
			boton.setVisible(false);
		}
		lista.add(boton);
	}

	public ListaBotonPc getLista() {
		return lista;
	}

	public void setLista(ListaBotonPc lista) {
		this.lista = lista;
	}

	public void drawme(Graphics g) {
		// TODO Auto-generated method stub
		if(isVisible()){
			g.drawImage(getImg().getImage(),
					(int)getPunto().getX(),
					(int)getPunto().getY(),null);
			for(int i=0;i<lista.length();i++){
				lista.get(i).drawme(g);
			}
		}
	}

	public BotonAbstract isSelected(Punto p) {
		// TODO Auto-generated method stub
		boolean b= p.getX()>=this.getPunto().getX() && p.getX()<=(this.getPunto().getX()+getImg().getIconWidth())&&
				   p.getY()>=this.getPunto().getY() && p.getY()<=(this.getPunto().getY()+getImg().getIconHeight());
		if(b){
			return this;
		}else{
			BotonAbstract bot=null;
			for(int i=0;i<lista.length()&&!b;i++){
				bot=lista.get(i);
				if(bot.isVisible()){
					b=bot.isSelected(p)!=null;
				}
			}
			if(!b){
				return null;
			}
			return bot;
		}
	}

}
